/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.





Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/

 

#ifndef VpcModel_h
#define VpcModel_h
#import <JDCloudOCSDKCharge/JDCloudOCSDKCharge.h>

@interface AssociateElasticIpSpec :NSObject

/// 绑定的弹性Ip Id
@property (strong,nonatomic,nonnull)  NSString*  elasticIpId;

/// 绑定弹性Ip到指定的privateIp
@property (strong,nonatomic,nonnull)  NSString*  privateIpAddress;

/// 绑定的弹性Ip地址
@property (strong,nonatomic,nonnull)  NSString*  elasticIpAddress;


-(id) initWithElasticIpId:(NSString*) elasticIpId
    privateIpAddress:(NSString*)privateIpAddress
    elasticIpAddress:(NSString*)elasticIpAddress;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface RouteTableRule :NSObject

/// 路由表规则ID
@property (strong,nonatomic,nonnull)  NSString*  ruleId;

/// 规则匹配优先级，取值范围[1,255]，默认为100。当路由规则子网掩码不同时，路由最长匹配优先；当路由规则子网掩码相同时, 按照优先级匹配转发, 优先级数字越小优先级越高，路由规则子网掩码相同、优先级相同、下一跳不同时，形成等价路由，不同下一跳负载均担。
@property (strong,nonatomic,nonnull)  NSNumber*  priority;

/// 下一跳类型, 取值范围:local:本地, instance:云主机, internet:公网, vpc_peering:vpc对等连接, bgw:边界网关
@property (strong,nonatomic,nonnull)  NSString*  nextHopType;

/// 下一跳id
@property (strong,nonatomic,nonnull)  NSString*  nextHopId;

/// 匹配地址前缀, internet类型路由跟其他类型的路由，addressPrefix不允许重复
@property (strong,nonatomic,nonnull)  NSString*  addressPrefix;


-(id) initWithRuleId:(NSString*) ruleId
    priority:(NSNumber*)priority
    nextHopType:(NSString*)nextHopType
    nextHopId:(NSString*)nextHopId
    addressPrefix:(NSString*)addressPrefix;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ModifyRouteTableRules :NSObject

/// 路由表规则的ID
@property (strong,nonatomic,nonnull)  NSString*  ruleId;

/// 规则匹配优先级，取值范围[1,255]。当路由规则子网掩码不同时，路由最长匹配优先；当路由规则子网掩码相同时, 按照优先级匹配转发, 优先级数字越小优先级越高，路由规则子网掩码相同、优先级相同、下一跳不同时，形成等价路由，不同下一跳负载均担。
@property (strong,nonatomic,nonnull)  NSNumber*  priority;

/// 下一跳类型, 取值范围:instance:云主机, internet:公网, vpc_peering:vpc对等连接, bgw:边界网关
@property (strong,nonatomic,nonnull)  NSString*  nextHopType;

/// 下一跳id
@property (strong,nonatomic,nonnull)  NSString*  nextHopId;

/// 路由表规则前缀, internet类型路由跟其他类型的路由，addressPrefix不允许重复
@property (strong,nonatomic,nonnull)  NSString*  addressPrefix;


-(id) initWithRuleId:(NSString*) ruleId
    priority:(NSNumber*)priority
    nextHopType:(NSString*)nextHopType
    nextHopId:(NSString*)nextHopId
    addressPrefix:(NSString*)addressPrefix;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ModifyVpcPeeringSpec :NSObject

/// VpcPeering的名字,不为空。名称取值范围：1-32个中文、英文大小写的字母、数字和下划线分隔符
@property (strong,nonatomic,nonnull)  NSString*  vpcPeeringName;

/// VpcPeering 描述，取值范围：0-256个中文、英文大小写的字母、数字和下划线分隔符
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;


-(id) initWithVpcPeeringName:(NSString*) vpcPeeringName
    descriptionValue:(NSString*)descriptionValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface DisassociateRouteTableSpec :NSObject

/// 路由表要解绑的子网ID，解绑后子网绑定默认路由表
@property (strong,nonatomic,nonnull)  NSString*  subnetId;


-(id) initWithSubnetId:(NSString*) subnetId;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ModifyVpcSpec :NSObject

/// 私有网络名称,只允许输入中文、数字、大小写字母、英文下划线“_”及中划线“-”，不允许为空且不超过32字符。
@property (strong,nonatomic,nonnull)  NSString*  vpcName;

/// vpc描述，允许输入UTF-8编码下的全部字符，不超过256字符。
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;


-(id) initWithVpcName:(NSString*) vpcName
    descriptionValue:(NSString*)descriptionValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface AddRouteTableRules :NSObject

/// 下一跳类型, 取值范围:instance:云主机, internet:公网, vpc_peering:vpc对等连接, bgw:边界网关
@property (strong,nonatomic,nonnull)  NSString*  nextHopType;

/// 下一跳id
@property (strong,nonatomic,nonnull)  NSString*  nextHopId;

/// 匹配地址前缀, internet类型路由跟其他类型的路由，addressPrefix不允许重复
@property (strong,nonatomic,nonnull)  NSString*  addressPrefix;

/// 规则匹配优先级，取值范围[1,255]，默认为100。当路由规则子网掩码不同时，路由最长匹配优先；当路由规则子网掩码相同时, 按照优先级匹配转发, 优先级数字越小优先级越高，路由规则子网掩码相同、优先级相同、下一跳不同时，形成等价路由，不同下一跳负载均担。
@property (strong,nonatomic,nonnull)  NSNumber*  priority;


-(id) initWithNextHopType:(NSString*) nextHopType
    nextHopId:(NSString*)nextHopId
    addressPrefix:(NSString*)addressPrefix
    priority:(NSNumber*)priority;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface AssociateRouteTableSpec :NSObject

/// 路由表要绑定的子网ID列表, subnet已被其他路由表绑定时，自动解绑。
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  subnetIds;


-(id) initWithSubnetIds:(NSArray<NSString*>*) subnetIds;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface VpcQuota :NSObject

/// 资源类型，取值范围：vpc、elastic_ip、subnet、security_group、vpcpeering、network_interface（配额只统计辅助网卡）
@property (strong,nonatomic,nonnull)  NSString*  type;

/// vpc、elastic_ip、network_interface为空, subnet、security_group、vpcpeering为vpcId
@property (strong,nonatomic,nonnull)  NSString*  parentResourceId;

/// 配额大小
@property (strong,nonatomic,nonnull)  NSNumber*  maxLimit;

/// 已存在的资源数量
@property (strong,nonatomic,nonnull)  NSNumber*  count;


-(id) initWithType:(NSString*) type
    parentResourceId:(NSString*)parentResourceId
    maxLimit:(NSNumber*)maxLimit
    count:(NSNumber*)count;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface SubnetSpec :NSObject

/// 子网所属vpc的Id
@property (strong,nonatomic,nonnull)  NSString*  vpcId;

/// 子网名称,只允许输入中文、数字、大小写字母、英文下划线“_”及中划线“-”，不允许为空且不超过32字符。
@property (strong,nonatomic,nonnull)  NSString*  subnetName;

/// 子网网段，vpc内子网网段不能重叠，cidr的取值范围：10.0.0.0/8、172.16.0.0/12和192.168.0.0/16及它们包含的子网，且子网掩码长度为16-28之间，如果vpc含有cidr，则必须为vpc所在cidr的子网
@property (strong,nonatomic,nonnull)  NSString*  addressPrefix;

/// 子网关联的路由表Id, 默认为vpc的默认路由表
@property (strong,nonatomic,nonnull)  NSString*  routeTableId;

/// 子网描述信息,允许输入UTF-8编码下的全部字符，不超过256字符。
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;


-(id) initWithVpcId:(NSString*) vpcId
    subnetName:(NSString*)subnetName
    addressPrefix:(NSString*)addressPrefix
    routeTableId:(NSString*)routeTableId
    descriptionValue:(NSString*)descriptionValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface NetworkInterfacePrivateIp :NSObject

/// 私有IP的IPV4地址
@property (strong,nonatomic,nonnull)  NSString*  privateIpAddress;

/// 弹性IP实例ID
@property (strong,nonatomic,nonnull)  NSString*  elasticIpId;

/// 弹性IP实例地址
@property (strong,nonatomic,nonnull)  NSString*  elasticIpAddress;


-(id) initWithPrivateIpAddress:(NSString*) privateIpAddress
    elasticIpId:(NSString*)elasticIpId
    elasticIpAddress:(NSString*)elasticIpAddress;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Subnet :NSObject

/// Subnet的Id
@property (strong,nonatomic,nonnull)  NSString*  subnetId;

/// 子网名称
@property (strong,nonatomic,nonnull)  NSString*  subnetName;

/// 子网所属VPC的Id
@property (strong,nonatomic,nonnull)  NSString*  vpcId;

/// 子网网段，vpc内子网网段不能重叠，cidr的取值范围：10.0.0.0/8、172.16.0.0/12和192.168.0.0/16及它们包含的子网，且子网掩码长度为16-28之间，如果VPC含有Cidr，则必须为VPC所在Cidr的子网
@property (strong,nonatomic,nonnull)  NSString*  addressPrefix;

/// 子网可用ip数量
@property (strong,nonatomic,nonnull)  NSNumber*  availableIpCount;

/// 子网描述信息
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;

/// 子网关联的路由表Id
@property (strong,nonatomic,nonnull)  NSString*  routeTableId;

/// 子网关联的acl Id
@property (strong,nonatomic,nonnull)  NSString*  aclId;

/// 子网的起始地址，子网第1个地位为路由器网关保留，第2个地址为dhcp服务保留
@property (strong,nonatomic,nonnull)  NSString*  startIp;

/// 子网的结束地址，子网第1个地位为路由器网关保留，第2个地址为dhcp服务保留
@property (strong,nonatomic,nonnull)  NSString*  endIp;

/// 子网创建时间
@property (strong,nonatomic,nonnull)  NSString*  createdTime;


-(id) initWithSubnetId:(NSString*) subnetId
    subnetName:(NSString*)subnetName
    vpcId:(NSString*)vpcId
    addressPrefix:(NSString*)addressPrefix
    availableIpCount:(NSNumber*)availableIpCount
    descriptionValue:(NSString*)descriptionValue
    routeTableId:(NSString*)routeTableId
    aclId:(NSString*)aclId
    startIp:(NSString*)startIp
    endIp:(NSString*)endIp
    createdTime:(NSString*)createdTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ModifyNetworkAclRuleSpec :NSObject

/// networkAcl规则ID
@property (strong,nonatomic,nonnull)  NSString*  ruleId;

/// 规则限定协议。取值范围：All,TCP,UDP,ICMP
@property (strong,nonatomic,nonnull)  NSString*  protocol;

/// 规则限定起始传输层端口, 取值范围:1-65535, 若protocol为传输层协议，默认值为1，若protocol不是传输层协议，设置无效，恒为0。如果规则只限定一个端口号，fromPort和toPort填写同一个值
@property (strong,nonatomic,nonnull)  NSNumber*  fromPort;

/// 规则限定终止传输层端口, 取值范围:1-65535, 若protocol为传输层协议，默认值为65535，若protocol不是传输层协议，设置无效，恒为0。如果规则只限定一个端口号，fromPort和toPort填写同一个值
@property (strong,nonatomic,nonnull)  NSNumber*  toPort;

/// 匹配地址前缀
@property (strong,nonatomic,nonnull)  NSString*  addressPrefix;

/// 访问控制策略：allow:允许，deny：拒绝
@property (strong,nonatomic,nonnull)  NSString*  ruleAction;

/// 规则匹配优先级，取值范围为[1,32768]，优先级数字越小优先级越高
@property (strong,nonatomic,nonnull)  NSNumber*  priority;

/// 描述,允许输入UTF-8编码下的全部字符，不超过256字符
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;


-(id) initWithRuleId:(NSString*) ruleId
    protocol:(NSString*)protocol
    fromPort:(NSNumber*)fromPort
    toPort:(NSNumber*)toPort
    addressPrefix:(NSString*)addressPrefix
    ruleAction:(NSString*)ruleAction
    priority:(NSNumber*)priority
    descriptionValue:(NSString*)descriptionValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface SecurityGroupRule :NSObject

/// 安全组规则ID
@property (strong,nonatomic,nonnull)  NSString*  ruleId;

/// 安全组规则方向。0：入规则; 1：出规则
@property (strong,nonatomic,nonnull)  NSNumber*  direction;

/// 规则限定协议。300:All; 6:TCP; 17:UDP; 1:ICMP
@property (strong,nonatomic,nonnull)  NSNumber*  protocol;

/// 匹配地址前缀
@property (strong,nonatomic,nonnull)  NSString*  addressPrefix;

/// 匹配地址协议版本。4：IPv4
@property (strong,nonatomic,nonnull)  NSNumber*  ipVersion;

/// 规则限定起始传输层端口, 默认1 ，若protocal不是传输层协议，恒为0
@property (strong,nonatomic,nonnull)  NSNumber*  fromPort;

/// 规则限定终止传输层端口, 默认1 ，若protocal不是传输层协议，恒为0
@property (strong,nonatomic,nonnull)  NSNumber*  toPort;

/// 安全组规则创建时间
@property (strong,nonatomic,nonnull)  NSString*  createdTime;

/// 描述,​ 允许输入UTF-8编码下的全部字符，不超过256字符
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;


-(id) initWithRuleId:(NSString*) ruleId
    direction:(NSNumber*)direction
    protocol:(NSNumber*)protocol
    addressPrefix:(NSString*)addressPrefix
    ipVersion:(NSNumber*)ipVersion
    fromPort:(NSNumber*)fromPort
    toPort:(NSNumber*)toPort
    createdTime:(NSString*)createdTime
    descriptionValue:(NSString*)descriptionValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ModifyQuotaSpec :NSObject

/// 资源类型，取值范围：vpc、elastic_ip、subnet、security_group、vpcpeering、network_interface（配额只统计辅助网卡）
@property (strong,nonatomic,nonnull)  NSString*  type;

/// type为vpc、elastic_ip、network_interface不设置, type为subnet、security_group、vpcpeering设置为vpcId
@property (strong,nonatomic,nonnull)  NSString*  parentResourceId;

/// 配额大小
@property (strong,nonatomic,nonnull)  NSNumber*  maxLimit;


-(id) initWithType:(NSString*) type
    parentResourceId:(NSString*)parentResourceId
    maxLimit:(NSNumber*)maxLimit;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface NetworkAclRule :NSObject

/// networkAcl规则ID
@property (strong,nonatomic,nonnull)  NSString*  ruleId;

/// 规则限定协议。取值范围：All,TCP,UDP,ICMP
@property (strong,nonatomic,nonnull)  NSString*  protocol;

/// 规则限定起始传输层端口, 取值范围:1-65535, 若protocol为传输层协议，默认值为1，若protocol不是传输层协议，设置无效，恒为0。如果规则只限定一个端口号，fromPort和toPort填写同一个值
@property (strong,nonatomic,nonnull)  NSNumber*  fromPort;

/// 规则限定终止传输层端口, 取值范围:1-65535, 若protocol为传输层协议，默认值为65535，若protocol不是传输层协议，设置无效，恒为0。如果规则只限定一个端口号，fromPort和toPort填写同一个值
@property (strong,nonatomic,nonnull)  NSNumber*  toPort;

/// networkAcl规则方向。ingress：入规则; egress：出规则
@property (strong,nonatomic,nonnull)  NSString*  direction;

/// 匹配地址前缀
@property (strong,nonatomic,nonnull)  NSString*  addressPrefix;

/// 访问控制策略：allow:允许，deny：拒绝
@property (strong,nonatomic,nonnull)  NSString*  ruleAction;

/// 规则匹配优先级，取值范围为[1,32768]，优先级数字越小优先级越高
@property (strong,nonatomic,nonnull)  NSNumber*  priority;

/// 描述,允许输入UTF-8编码下的全部字符，不超过256字符
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;

/// networkAclRule创建时间
@property (strong,nonatomic,nonnull)  NSString*  createdTime;


-(id) initWithRuleId:(NSString*) ruleId
    protocol:(NSString*)protocol
    fromPort:(NSNumber*)fromPort
    toPort:(NSNumber*)toPort
    direction:(NSString*)direction
    addressPrefix:(NSString*)addressPrefix
    ruleAction:(NSString*)ruleAction
    priority:(NSNumber*)priority
    descriptionValue:(NSString*)descriptionValue
    createdTime:(NSString*)createdTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface NetworkAclSpec :NSObject

/// 私有网络id
@property (strong,nonatomic,nonnull)  NSString*  vpcId;

/// networkAcl名称
@property (strong,nonatomic,nonnull)  NSString*  networkAclName;

/// 描述,允许输入UTF-8编码下的全部字符，不超过256字符
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;


-(id) initWithVpcId:(NSString*) vpcId
    networkAclName:(NSString*)networkAclName
    descriptionValue:(NSString*)descriptionValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface AddSecurityGroupRules :NSObject

/// 规则限定协议。300:All; 6:TCP; 17:UDP; 1:ICMP
@property (strong,nonatomic,nonnull)  NSNumber*  protocol;

/// 安全组规则方向。0：入规则; 1：出规则
@property (strong,nonatomic,nonnull)  NSNumber*  direction;

/// 匹配地址前缀
@property (strong,nonatomic,nonnull)  NSString*  addressPrefix;

/// 规则限定起始传输层端口, 取值范围:1-65535, 若protocol为传输层协议，默认值为1，若protocol不是传输层协议，恒为0。如果规则只限定一个端口号，fromPort和toPort填写同一个值
@property (strong,nonatomic,nonnull)  NSNumber*  fromPort;

/// 规则限定终止传输层端口, 取值范围:1-65535, 若protocol为传输层协议，默认值为65535，若protocol不是传输层协议，恒为0。如果规则只限定一个端口号，fromPort和toPort填写同一个值
@property (strong,nonatomic,nonnull)  NSNumber*  toPort;

/// 描述,​ 允许输入UTF-8编码下的全部字符，不超过256字符
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;


-(id) initWithProtocol:(NSNumber*) protocol
    direction:(NSNumber*)direction
    addressPrefix:(NSString*)addressPrefix
    fromPort:(NSNumber*)fromPort
    toPort:(NSNumber*)toPort
    descriptionValue:(NSString*)descriptionValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ModifyNetworkAclSpec :NSObject

/// networkAcl名称,只允许输入中文、数字、大小写字母、英文下划线“_”及中划线“-”，不允许为空且不超过32字符
@property (strong,nonatomic,nonnull)  NSString*  networkAclName;

/// 描述,允许输入UTF-8编码下的全部字符，不超过256字符
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;


-(id) initWithNetworkAclName:(NSString*) networkAclName
    descriptionValue:(NSString*)descriptionValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface NetworkInterfaceSpec :NSObject

/// 子网ID
@property (strong,nonatomic,nonnull)  NSString*  subnetId;

/// 可用区，用户的默认可用区
@property (strong,nonatomic,nonnull)  NSString*  az;

/// 网卡名称，只允许输入中文、数字、大小写字母、英文下划线“_”及中划线“-”，不允许为空且不超过32字符。
@property (strong,nonatomic,nonnull)  NSString*  networkInterfaceName;

/// 网卡主IP，如果不指定，会自动从子网中分配
@property (strong,nonatomic,nonnull)  NSString*  primaryIpAddress;

/// SecondaryIp列表
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  secondaryIpAddresses;

/// 自动分配的SecondaryIp数量
@property (strong,nonatomic,nonnull)  NSNumber*  secondaryIpCount;

/// 要绑定的安全组ID列表，最多指定5个安全组
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  securityGroups;

/// 源和目标IP地址校验，取值为0或者1,默认为1
@property (strong,nonatomic,nonnull)  NSNumber*  sanityCheck;

/// 描述,​ 允许输入UTF-8编码下的全部字符，不超过256字符
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;


-(id) initWithSubnetId:(NSString*) subnetId
    az:(NSString*)az
    networkInterfaceName:(NSString*)networkInterfaceName
    primaryIpAddress:(NSString*)primaryIpAddress
    secondaryIpAddresses:(NSArray<NSString*>*)secondaryIpAddresses
    secondaryIpCount:(NSNumber*)secondaryIpCount
    securityGroups:(NSArray<NSString*>*)securityGroups
    sanityCheck:(NSNumber*)sanityCheck
    descriptionValue:(NSString*)descriptionValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface DisassociateElasticIpSpec :NSObject

/// 指定解绑的弹性Ip Id
@property (strong,nonatomic,nonnull)  NSString*  elasticIpId;

/// 指定解绑的弹性Ip地址
@property (strong,nonatomic,nonnull)  NSString*  elasticIpAddress;


-(id) initWithElasticIpId:(NSString*) elasticIpId
    elasticIpAddress:(NSString*)elasticIpAddress;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface CreateVpcPeeringSpec :NSObject

/// VpcPeering的名字,不为空。名称取值范围：1-32个中文、英文大小写的字母、数字和下划线分隔符
@property (strong,nonatomic,nonnull)  NSString*  vpcPeeringName;

/// VpcPeering本端Vpc的Id
@property (strong,nonatomic,nonnull)  NSString*  vpcId;

/// VpcPeering对端Vpc的Id
@property (strong,nonatomic,nonnull)  NSString*  remoteVpcId;

/// VpcPeering 描述，取值范围：0-256个中文、英文大小写的字母、数字和下划线分隔符
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;


-(id) initWithVpcPeeringName:(NSString*) vpcPeeringName
    vpcId:(NSString*)vpcId
    remoteVpcId:(NSString*)remoteVpcId
    descriptionValue:(NSString*)descriptionValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ModifySecurityGroupRules :NSObject

/// 安全组规则的ID。
@property (strong,nonatomic,nonnull)  NSString*  ruleId;

/// 规则限定协议。300:All; 6:TCP; 17:UDP; 1:ICMP
@property (strong,nonatomic,nonnull)  NSNumber*  protocol;

/// 安全组规则的起始端口。取值范围：1-65535
@property (strong,nonatomic,nonnull)  NSNumber*  fromPort;

/// 安全组规则的终端口。取值范围：1-65535
@property (strong,nonatomic,nonnull)  NSNumber*  toPort;

/// 安全组规则前缀，取值范围：正确的CIDR
@property (strong,nonatomic,nonnull)  NSString*  addressPrefix;

/// 安全组规则的描述，取值范围：0-256个UTF-8编码下的全部字符
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;


-(id) initWithRuleId:(NSString*) ruleId
    protocol:(NSNumber*)protocol
    fromPort:(NSNumber*)fromPort
    toPort:(NSNumber*)toPort
    addressPrefix:(NSString*)addressPrefix
    descriptionValue:(NSString*)descriptionValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface UnassignSecondaryIpsSpec :NSObject

/// 指定删除的secondaryIp地址
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  secondaryIps;


-(id) initWithSecondaryIps:(NSArray<NSString*>*) secondaryIps;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface RouteTableSpec :NSObject

/// 路由表所属的私有网络ID
@property (strong,nonatomic,nonnull)  NSString*  vpcId;

/// 路由表名称，只允许输入中文、数字、大小写字母、英文下划线“_”及中划线“-”，不允许为空且不超过32字符。
@property (strong,nonatomic,nonnull)  NSString*  routeTableName;

/// 描述,​ 允许输入UTF-8编码下的全部字符，不超过256字符
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;


-(id) initWithVpcId:(NSString*) vpcId
    routeTableName:(NSString*)routeTableName
    descriptionValue:(NSString*)descriptionValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ModifyNetworkSecurityGroupSpec :NSObject

/// 安全组的名字。名称取值范围：1-32个中文、英文大小写的字母、数字和下划线分隔符
@property (strong,nonatomic,nonnull)  NSString*  networkSecurityGroupName;

/// 安全组的描述，取值范围：0-256个UTF-8编码下的全部字符
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;


-(id) initWithNetworkSecurityGroupName:(NSString*) networkSecurityGroupName
    descriptionValue:(NSString*)descriptionValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface AddNetworkAclRuleSpec :NSObject

/// 规则限定协议。取值范围：All,TCP,UDP,ICMP
@property (strong,nonatomic,nonnull)  NSString*  protocol;

/// 规则限定起始传输层端口, 取值范围:1-65535, 若protocol为传输层协议，默认值为1，若protocol不是传输层协议，设置无效，恒为0。如果规则只限定一个端口号，fromPort和toPort填写同一个值
@property (strong,nonatomic,nonnull)  NSNumber*  fromPort;

/// 规则限定终止传输层端口, 取值范围:1-65535, 若protocol为传输层协议，默认值为65535，若protocol不是传输层协议，设置无效，恒为0。如果规则只限定一个端口号，fromPort和toPort填写同一个值
@property (strong,nonatomic,nonnull)  NSNumber*  toPort;

/// networkAcl规则方向。ingress：入规则; egress：出规则
@property (strong,nonatomic,nonnull)  NSString*  direction;

/// 匹配地址前缀
@property (strong,nonatomic,nonnull)  NSString*  addressPrefix;

/// 访问控制策略：allow:允许，deny：拒绝
@property (strong,nonatomic,nonnull)  NSString*  ruleAction;

/// 规则匹配优先级，取值范围为[1,32768]，优先级数字越小优先级越高
@property (strong,nonatomic,nonnull)  NSNumber*  priority;

/// 描述,允许输入UTF-8编码下的全部字符，不超过256字符
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;


-(id) initWithProtocol:(NSString*) protocol
    fromPort:(NSNumber*)fromPort
    toPort:(NSNumber*)toPort
    direction:(NSString*)direction
    addressPrefix:(NSString*)addressPrefix
    ruleAction:(NSString*)ruleAction
    priority:(NSNumber*)priority
    descriptionValue:(NSString*)descriptionValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ModifySubnetSpec :NSObject

/// 子网名称,只允许输入中文、数字、大小写字母、英文下划线“_”及中划线“-”，不允许为空且不超过32字符。
@property (strong,nonatomic,nonnull)  NSString*  subnetName;

/// 子网描述信息，允许输入UTF-8编码下的全部字符，不超过256字符。
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;


-(id) initWithSubnetName:(NSString*) subnetName
    descriptionValue:(NSString*)descriptionValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface AssignSecondaryIpsSpec :NSObject

/// secondary ip被其他接口占用时，是否抢占。false：非抢占重分配，true：抢占重分配，默认抢占重分配。默认值：true
@property (strong,nonatomic,nonnull)  NSNumber*  force;

/// 指定分配的secondaryIp地址
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  secondaryIps;

/// 指定自动分配的secondaryIp个数
@property (strong,nonatomic,nonnull)  NSNumber*  secondaryIpCount;


-(id) initWithForce:(NSNumber*) force
    secondaryIps:(NSArray<NSString*>*)secondaryIps
    secondaryIpCount:(NSNumber*)secondaryIpCount;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ModifyRouteTableSpec :NSObject

/// 路由表的名字。名称取值范围：1-32个中文、英文大小写的字母、数字和下划线分隔符
@property (strong,nonatomic,nonnull)  NSString*  routeTableName;

/// 路由表的描述，取值范围：0-256个UTF-8编码下的全部字符
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;


-(id) initWithRouteTableName:(NSString*) routeTableName
    descriptionValue:(NSString*)descriptionValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface VpcSpec :NSObject

/// 私有网络名称,只允许输入中文、数字、大小写字母、英文下划线“_”及中划线“-”，不允许为空且不超过32字符。
@property (strong,nonatomic,nonnull)  NSString*  vpcName;

/// 如果为空，则不限制网段，如果不为空，10.0.0.0/8、172.16.0.0/12和192.168.0.0/16及它们包含的子网，且子网掩码长度为16-28之间
@property (strong,nonatomic,nonnull)  NSString*  addressPrefix;

/// vpc描述，允许输入UTF-8编码下的全部字符，不超过256字符。
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;


-(id) initWithVpcName:(NSString*) vpcName
    addressPrefix:(NSString*)addressPrefix
    descriptionValue:(NSString*)descriptionValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ModifyElasticIpSpec :NSObject

/// 弹性公网IP的限速（单位：Mbps），取值范围为[1-200]
@property (strong,nonatomic,nonnull)  NSNumber*  bandwidthMbps;


-(id) initWithBandwidthMbps:(NSNumber*) bandwidthMbps;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface VpcPeeringVpcInfo :NSObject

/// 子网所属VPC的Id
@property (strong,nonatomic,nonnull)  NSString*  vpcId;

/// 私有网络名称，取值范围：1-60个中文、英文大小写的字母、数字和下划线分隔符
@property (strong,nonatomic,nonnull)  NSString*  vpcName;

/// 如果为空，则不限制网段，如果不为空，10.0.0.0/8、172.16.0.0/12和192.168.0.0/16及它们包含的子网，且子网掩码长度为16-28之间
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  addressPrefix;


-(id) initWithVpcId:(NSString*) vpcId
    vpcName:(NSString*)vpcName
    addressPrefix:(NSArray<NSString*>*)addressPrefix;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface NetworkSecurityGroupSpec :NSObject

/// 私有网络ID
@property (strong,nonatomic,nonnull)  NSString*  vpcId;

/// 安全组名称，只允许输入中文、数字、大小写字母、英文下划线“_”及中划线“-”，不允许为空且不超过32字符。
@property (strong,nonatomic,nonnull)  NSString*  networkSecurityGroupName;

/// 描述,​ 允许输入UTF-8编码下的全部字符，不超过256字符
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;


-(id) initWithVpcId:(NSString*) vpcId
    networkSecurityGroupName:(NSString*)networkSecurityGroupName
    descriptionValue:(NSString*)descriptionValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ModifyNetworkInterfaceSpec :NSObject

/// 弹性网卡名称,只允许输入中文、数字、大小写字母、英文下划线“_”及中划线“-”，不允许为空且不超过32字符
@property (strong,nonatomic,nonnull)  NSString*  networkInterfaceName;

/// 描述,允许输入UTF-8编码下的全部字符，不超过256字符
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;

/// 以覆盖原有安全组的方式更新的安全组。如果更新安全组ID列表，最多5个安全组
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  securityGroups;


-(id) initWithNetworkInterfaceName:(NSString*) networkInterfaceName
    descriptionValue:(NSString*)descriptionValue
    securityGroups:(NSArray<NSString*>*)securityGroups;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Segment :NSObject

/// 网段的Id
@property (strong,nonatomic,nonnull)  NSString*  segmentId;

/// 网段名称，只允许输入中文、数字、大小写字母、英文下划线“_”及中划线“-”，不允许为空且不超过32字符。
@property (strong,nonatomic,nonnull)  NSString*  segmentName;

/// 网段描述，允许输入UTF-8编码下的全部字符，不超过256字符。
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;

/// 网络地址段
@property (strong,nonatomic,nonnull)  NSString*  addressPrefix;

/// 网段可用ip数量
@property (strong,nonatomic,nonnull)  NSNumber*  availableIpCount;

/// IP服务商，取值为bgp或no_bgp，cn-north-1：bgp；cn-south-1：[bgp，no_bgp]；cn-east-1：[bgp，no_bgp]；cn-east-2：bgp
@property (strong,nonatomic,nonnull)  NSString*  provider;

/// 网段的起始地址
@property (strong,nonatomic,nonnull)  NSString*  startIp;

/// 网段的结束地址
@property (strong,nonatomic,nonnull)  NSString*  endIp;


-(id) initWithSegmentId:(NSString*) segmentId
    segmentName:(NSString*)segmentName
    descriptionValue:(NSString*)descriptionValue
    addressPrefix:(NSString*)addressPrefix
    availableIpCount:(NSNumber*)availableIpCount
    provider:(NSString*)provider
    startIp:(NSString*)startIp
    endIp:(NSString*)endIp;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface RouteTable :NSObject

/// 路由表ID
@property (strong,nonatomic,nonnull)  NSString*  routeTableId;

/// 路由表名称，只允许输入中文、数字、大小写字母、英文下划线“_”及中划线“-”，不允许为空且不超过32字符。
@property (strong,nonatomic,nonnull)  NSString*  routeTableName;

/// 路由表类型，default：默认路由表，custom：自定义路由表
@property (strong,nonatomic,nonnull)  NSString*  routeTableType;

/// 路由表描述信息，允许输入UTF-8编码下的全部字符，不超过256字符。
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;

/// 私有网络ID
@property (strong,nonatomic,nonnull)  NSString*  vpcId;

/// 路由表规则信息
@property (strong,nonatomic,nonnull)  NSArray<RouteTableRule*>*  routeTableRules;

/// 路由表绑定的子网列表
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  subnetIds;

/// 路由表创建时间
@property (strong,nonatomic,nonnull)  NSString*  createdTime;


-(id) initWithRouteTableId:(NSString*) routeTableId
    routeTableName:(NSString*)routeTableName
    routeTableType:(NSString*)routeTableType
    descriptionValue:(NSString*)descriptionValue
    vpcId:(NSString*)vpcId
    routeTableRules:(NSArray<RouteTableRule*>*)routeTableRules
    subnetIds:(NSArray<NSString*>*)subnetIds
    createdTime:(NSString*)createdTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface AddRouteTableRulesSpec :NSObject

/// 安全组规则信息
@property (strong,nonatomic,nonnull)  NSArray<AddRouteTableRules*>*  routeTableRuleSpecs;


-(id) initWithRouteTableRuleSpecs:(NSArray<AddRouteTableRules*>*) routeTableRuleSpecs;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface NetworkInterface :NSObject

/// 弹性网卡名称
@property (strong,nonatomic,nonnull)  NSString*  networkInterfaceName;

/// 弹性网卡ID
@property (strong,nonatomic,nonnull)  NSString*  networkInterfaceId;

/// 可用区名称
@property (strong,nonatomic,nonnull)  NSString*  az;

/// 网卡角色，取值范围：Primary（主网卡）、Secondary（辅助网卡）
@property (strong,nonatomic,nonnull)  NSString*  role;

/// 以太网地址
@property (strong,nonatomic,nonnull)  NSString*  macAddress;

/// 虚拟网络ID
@property (strong,nonatomic,nonnull)  NSString*  vpcId;

/// 子网ID
@property (strong,nonatomic,nonnull)  NSString*  subnetId;

/// 安全组ID列表
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  networkSecurityGroupIds;

/// 源和目标IP地址校验，取值为0或者1
@property (strong,nonatomic,nonnull)  NSNumber*  sanityCheck;

/// 网卡主IP
@property (strong,nonatomic,nonnull)  NetworkInterfacePrivateIp*  primaryIp;

/// 网卡附属IP列表
@property (strong,nonatomic,nonnull)  NSArray<NetworkInterfacePrivateIp*>*  secondaryIps;

/// 关联实例类型，取值范围：vm
@property (strong,nonatomic,nonnull)  NSString*  instanceType;

/// 关联实例ID
@property (strong,nonatomic,nonnull)  NSString*  instanceId;

/// 实例所属的账号
@property (strong,nonatomic,nonnull)  NSString*  instanceOwnerId;

/// 网卡在实例上的设备索引号，取值范围：[0,8]，0：辅助网卡未绑定设备，1：主网卡，2-8：辅助网卡已绑定设备
@property (strong,nonatomic,nonnull)  NSNumber*  deviceIndex;

/// 网卡描述信息
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;

/// 弹性网卡创建时间
@property (strong,nonatomic,nonnull)  NSString*  createdTime;


-(id) initWithNetworkInterfaceName:(NSString*) networkInterfaceName
    networkInterfaceId:(NSString*)networkInterfaceId
    az:(NSString*)az
    role:(NSString*)role
    macAddress:(NSString*)macAddress
    vpcId:(NSString*)vpcId
    subnetId:(NSString*)subnetId
    networkSecurityGroupIds:(NSArray<NSString*>*)networkSecurityGroupIds
    sanityCheck:(NSNumber*)sanityCheck
    primaryIp:(NetworkInterfacePrivateIp*)primaryIp
    secondaryIps:(NSArray<NetworkInterfacePrivateIp*>*)secondaryIps
    instanceType:(NSString*)instanceType
    instanceId:(NSString*)instanceId
    instanceOwnerId:(NSString*)instanceOwnerId
    deviceIndex:(NSNumber*)deviceIndex
    descriptionValue:(NSString*)descriptionValue
    createdTime:(NSString*)createdTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ModifyNetworkAclRulesSpec :NSObject

/// networkAcl规则列表
@property (strong,nonatomic,nonnull)  NSArray<ModifyNetworkAclRuleSpec*>*  modifyNetworkAclRuleSpecs;


-(id) initWithModifyNetworkAclRuleSpecs:(NSArray<ModifyNetworkAclRuleSpec*>*) modifyNetworkAclRuleSpecs;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ElasticIp :NSObject

/// 弹性IP的Id
@property (strong,nonatomic,nonnull)  NSString*  elasticIpId;

/// 弹性IP地址
@property (strong,nonatomic,nonnull)  NSString*  elasticIpAddress;

/// 弹性ip的限速（单位：Mbps)
@property (strong,nonatomic,nonnull)  NSNumber*  bandwidthMbps;

/// IP服务商，取值为bgp或no_bgp
@property (strong,nonatomic,nonnull)  NSString*  provider;

/// 私有IP的IPV4地址
@property (strong,nonatomic,nonnull)  NSString*  privateIpAddress;

/// 配置弹性网卡Id
@property (strong,nonatomic,nonnull)  NSString*  networkInterfaceId;

/// 实例Id
@property (strong,nonatomic,nonnull)  NSString*  instanceId;

/// 实例类型
@property (strong,nonatomic,nonnull)  NSString*  instanceType;

/// 计费配置
@property (strong,nonatomic,nonnull)  Charge*  charge;

/// 弹性ip创建时间
@property (strong,nonatomic,nonnull)  NSString*  createdTime;

/// 弹性ip可用区属性，如果为空，表示全可用区
@property (strong,nonatomic,nonnull)  NSString*  az;


-(id) initWithElasticIpId:(NSString*) elasticIpId
    elasticIpAddress:(NSString*)elasticIpAddress
    bandwidthMbps:(NSNumber*)bandwidthMbps
    provider:(NSString*)provider
    privateIpAddress:(NSString*)privateIpAddress
    networkInterfaceId:(NSString*)networkInterfaceId
    instanceId:(NSString*)instanceId
    instanceType:(NSString*)instanceType
    charge:(Charge*)charge
    createdTime:(NSString*)createdTime
    az:(NSString*)az;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface NetworkSecurityGroup :NSObject

/// 安全组ID
@property (strong,nonatomic,nonnull)  NSString*  networkSecurityGroupId;

/// 安全组名称
@property (strong,nonatomic,nonnull)  NSString*  networkSecurityGroupName;

/// 安全组描述信息
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;

/// 安全组所在vpc的Id
@property (strong,nonatomic,nonnull)  NSString*  vpcId;

/// 安全组规则信息
@property (strong,nonatomic,nonnull)  NSArray<SecurityGroupRule*>*  securityGroupRules;

/// 安全组创建时间
@property (strong,nonatomic,nonnull)  NSString*  createdTime;


-(id) initWithNetworkSecurityGroupId:(NSString*) networkSecurityGroupId
    networkSecurityGroupName:(NSString*)networkSecurityGroupName
    descriptionValue:(NSString*)descriptionValue
    vpcId:(NSString*)vpcId
    securityGroupRules:(NSArray<SecurityGroupRule*>*)securityGroupRules
    createdTime:(NSString*)createdTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ElasticIpSpec :NSObject

/// 弹性公网IP的限速（单位：Mbps），取值范围为[1-200]
@property (strong,nonatomic,nonnull)  NSNumber*  bandwidthMbps;

/// IP服务商，取值为bgp或no_bgp，cn-north-1：bgp；cn-south-1：[bgp，no_bgp]；cn-east-1：[bgp，no_bgp]；cn-east-2：bgp
@property (strong,nonatomic,nonnull)  NSString*  provider;

/// 计费配置
@property (strong,nonatomic,nonnull)  ChargeSpec*  chargeSpec;


-(id) initWithBandwidthMbps:(NSNumber*) bandwidthMbps
    provider:(NSString*)provider
    chargeSpec:(ChargeSpec*)chargeSpec;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface AddNetworkSecurityGroupRulesSpec :NSObject

/// 安全组规则信息
@property (strong,nonatomic,nonnull)  NSArray<AddSecurityGroupRules*>*  networkSecurityGroupRuleSpecs;


-(id) initWithNetworkSecurityGroupRuleSpecs:(NSArray<AddSecurityGroupRules*>*) networkSecurityGroupRuleSpecs;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ModifySecurityGroupRuleSpec :NSObject

/// 安全组规则信息
@property (strong,nonatomic,nonnull)  NSArray<ModifySecurityGroupRules*>*  modifySecurityGroupRuleSpecs;


-(id) initWithModifySecurityGroupRuleSpecs:(NSArray<ModifySecurityGroupRules*>*) modifySecurityGroupRuleSpecs;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface NetworkAcl :NSObject

/// networkAcl ID
@property (strong,nonatomic,nonnull)  NSString*  networkAclId;

/// networkAcl名称
@property (strong,nonatomic,nonnull)  NSString*  networkAclName;

/// 私有网络 ID
@property (strong,nonatomic,nonnull)  NSString*  vpcId;

/// networkAcl规则列表
@property (strong,nonatomic,nonnull)  NSArray<NetworkAclRule*>*  networkAclRules;

/// networkAcl绑定的子网列表
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  subnetIds;

/// 描述,允许输入UTF-8编码下的全部字符，不超过256字符
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;

/// networkAcl创建时间
@property (strong,nonatomic,nonnull)  NSString*  createdTime;


-(id) initWithNetworkAclId:(NSString*) networkAclId
    networkAclName:(NSString*)networkAclName
    vpcId:(NSString*)vpcId
    networkAclRules:(NSArray<NetworkAclRule*>*)networkAclRules
    subnetIds:(NSArray<NSString*>*)subnetIds
    descriptionValue:(NSString*)descriptionValue
    createdTime:(NSString*)createdTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ModifyRouteTableRulesSpec :NSObject

/// 路由表规则信息
@property (strong,nonatomic,nonnull)  NSArray<ModifyRouteTableRules*>*  modifyRouteTableRuleSpecs;


-(id) initWithModifyRouteTableRuleSpecs:(NSArray<ModifyRouteTableRules*>*) modifyRouteTableRuleSpecs;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface AddNetworkAclRulesSpec :NSObject

/// networkAcl规则列表
@property (strong,nonatomic,nonnull)  NSArray<AddNetworkAclRuleSpec*>*  networkAclRuleSpecs;


-(id) initWithNetworkAclRuleSpecs:(NSArray<AddNetworkAclRuleSpec*>*) networkAclRuleSpecs;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface CreateElasticIpSpec :NSObject

/// 购买弹性ip数量；取值范围：[1,100]
@property (strong,nonatomic,nonnull)  NSNumber*  maxCount;

/// 指定弹性ip地址进行创建，当申请创建多个弹性ip时，必须为空
@property (strong,nonatomic,nonnull)  NSString*  elasticIpAddress;

/// 弹性ip规格
@property (strong,nonatomic,nonnull)  ElasticIpSpec*  elasticIpSpec;


-(id) initWithMaxCount:(NSNumber*) maxCount
    elasticIpAddress:(NSString*)elasticIpAddress
    elasticIpSpec:(ElasticIpSpec*)elasticIpSpec;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface VpcPeering :NSObject

/// VpcPeering的Id
@property (strong,nonatomic,nonnull)  NSString*  vpcPeeringId;

/// VpcPeering名称，同账号下不允许重名，取值范围：1-32个中文、英文大小写的字母、数字和下划线分隔符
@property (strong,nonatomic,nonnull)  NSString*  vpcPeeringName;

/// 状态，取值为Connected，Disconnected，Initiated
@property (strong,nonatomic,nonnull)  NSString*  vpcPeeringState;

/// VpcPeering 描述，可为空值，取值范围：0-256个中文、英文大小写的字母、数字和下划线分隔符
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;

/// 发起VpcPeering的Vpc信息
@property (strong,nonatomic,nonnull)  VpcPeeringVpcInfo*  vpcInfo;

/// 对端的Vpc信息
@property (strong,nonatomic,nonnull)  VpcPeeringVpcInfo*  remoteVpcInfo;

/// VpcPeering创建时间
@property (strong,nonatomic,nonnull)  NSString*  createdTime;


-(id) initWithVpcPeeringId:(NSString*) vpcPeeringId
    vpcPeeringName:(NSString*)vpcPeeringName
    vpcPeeringState:(NSString*)vpcPeeringState
    descriptionValue:(NSString*)descriptionValue
    vpcInfo:(VpcPeeringVpcInfo*)vpcInfo
    remoteVpcInfo:(VpcPeeringVpcInfo*)remoteVpcInfo
    createdTime:(NSString*)createdTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Vpc :NSObject

/// Vpc的Id
@property (strong,nonatomic,nonnull)  NSString*  vpcId;

/// 如果为空，则不限制网段，如果不为空，10.0.0.0/8、172.16.0.0/12和192.168.0.0/16及它们包含的子网，且子网掩码长度为16-28之间
@property (strong,nonatomic,nonnull)  NSString*  addressPrefix;

/// VPC 描述，取值范围：1~120个字符
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;

/// 私有网络名称，取值范围：1-60个中文、英文大小写的字母、数字和下划线分隔符
@property (strong,nonatomic,nonnull)  NSString*  vpcName;

/// 同一vpc下的acl id 列表
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  aclIds;

/// RouteTableIds
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  routeTableIds;

/// 私有网络包含的子网列表
@property (strong,nonatomic,nonnull)  NSArray<Subnet*>*  subnets;

/// vpc创建时间
@property (strong,nonatomic,nonnull)  NSString*  createdTime;


-(id) initWithVpcId:(NSString*) vpcId
    addressPrefix:(NSString*)addressPrefix
    descriptionValue:(NSString*)descriptionValue
    vpcName:(NSString*)vpcName
    aclIds:(NSArray<NSString*>*)aclIds
    routeTableIds:(NSArray<NSString*>*)routeTableIds
    subnets:(NSArray<Subnet*>*)subnets
    createdTime:(NSString*)createdTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end

#endif /* VpcModel_h */
